﻿using System;
using System.Linq;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace Smart
{
    public enum OfflineEvrakTipleri
    {
        Siparis,
        Tahsilat
    }

    public partial class frmBelgeNoGiris : Form
    {
        private OfflineEvrakTipleri _islemcinsi = OfflineEvrakTipleri.Siparis;
        public OfflineEvrakTipleri IslemCinsi { get { return _islemcinsi; } set { _islemcinsi = value; } }
        public Cari SecilenCari { get; set; }

        public frmBelgeNoGiris()
        {
            InitializeComponent();
        }

        bool sipShow = false;

        private void toolbarControl1_ItemEntered(object sender, EventArgs e)
        {
            switch (toolbarControl1.SelectedIndex)
            {
                case 0:
                    if (MessageBox.Show("Evrak'tan çıkmak istediğinize eminmisiniz ?", "Uyarı", MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button2) == DialogResult.Yes)
                    {
                        this.Close();
                    }
                    break;
                case 1:
                    if (!sipShow)
                    {
                        sipShow = true;
                        Sip.Show();
                    }
                    else
                    {
                        sipShow = false;
                        Sip.Hide();
                    }
                    break;
                case 2:
                    ileriClick();
                    break;
                default:
                    break;
            }
        }

        private int MaxSira(string seri)
        {
            int sira = 0;
            using (Query q = new Query(ProgramTipleri.SqlCe))
            {
                if (_islemcinsi == OfflineEvrakTipleri.Siparis)
                {
                    q.Add(string.Format("select max(evr_sira) FROM TBL_EVRAK where evr_seri='{0}'", seri));
                }
                else
                {
                    q.Add(string.Format("select max(ths_sira) FROM TBL_TAHSILAT where ths_seri='{0}'", seri));
                }
                sira = q.ExecScaler<int>();
            }
            return sira + 1;
        }

        private void ileriClick()
        {
            if (string.IsNullOrEmpty(txtSira.Text))
            {
                txtSira.Text = MaxSira(txtSeri.Text).ToString();
            }
            //if (Program.Session[Settings.BelgeGirisZorunlu].ToString() == "True" && string.IsNullOrEmpty(txtBelgeNo.Text))
            //{
            //    MessageBox.Show("Belge No girişi zorunludur !");
            //    return;
            //}
            if (!string.IsNullOrEmpty(txtSeri.Text) && !string.IsNullOrEmpty(txtSira.Text))
            {
                switch (IslemCinsi)
                {
                    case OfflineEvrakTipleri.Siparis:
                        frmOfflineEvrak evr = new frmOfflineEvrak();
                        evr.Tarih = dteTarih.Value;
                        evr.SecilenCari = this.SecilenCari;
                        evr.EvrakSeri = txtSeri.Text;
                        evr.EvrakSira = Cevir.Parse<int>(txtSira.Text);
                        evr.BelgeNo = txtBelgeNo.Text;
                        int vade = Cevir.Parse<int>(txtVade.Text);
                        if (vade > 0)
                        {
                            evr.Vade = vade * -1;
                        }

                        if (cmbDepo.SelectedIndex > -1)
                        {
                            evr.SrmKod = ((ComboItem)cmbDepo.SelectedItem).Value.ToString();
                        }
                        else
                        {
                            evr.SrmKod = Program.Session[Settings.SrmMerkez].ToString();
                        }
                        evr.Show();
                        this.Close();
                        break;
                    case OfflineEvrakTipleri.Tahsilat:
                        frmTahsilat ths = new frmTahsilat();
                        ths.SecilenCari = this.SecilenCari;
                        ths.EvrakSeri = txtSeri.Text;
                        ths.EvrakSira = Cevir.Parse<int>(txtSira.Text);
                        ths.BelgeNo = txtBelgeNo.Text;
                        ths.Tarih = dteTarih.Value;

                        if (cmbDepo.SelectedIndex > -1)
                        {
                            ths.SrmKod = ((ComboItem)cmbDepo.SelectedItem).Value.ToString();
                        }
                        else
                        {
                            ths.SrmKod = Program.Session[Settings.SrmMerkez].ToString();
                        }
                        ths.Show();
                        this.Close();
                        break;
                }

                this.Close();
            }
            else
            {
                MessageBox.Show("Lütfen bilgileri eksiksiz doldurun !");
            }
        }

        private void frmBelgeNoGiris_Load(object sender, EventArgs e)
        {
            using (Query q = new Query(ProgramTipleri.SqlCe))
            {
                q.Add("select srm_kodu,srm_adi from TBL_SRM");
                foreach (var item in q.ToList(new { no = "", adi = "" }))
                {
                    if (Program.Session.KullanilabilirSrm().Where(x => x == item.no).Count() > 0)
                    {
                        cmbDepo.Items.Add(new ComboItem() { Text = item.adi, Value = item.no });
                    }
                }
            }

            dteTarih.Value = DateTime.Now;
            txtSeri.Text = Program.Session[Settings.AlinanSiparisEvrakSeri].ToString();
            int vade = SecilenCari.Vade;
            if (vade < 0) vade = vade * -1;
            txtVade.Text = vade.ToString();

            dteTarih.Focus();
        }

        private void txtSeri_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
            {
                txtSira.Text = MaxSira(txtSeri.Text).ToString();
                txtSira.Focus();
            }
        }

        private void txtSira_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
            {
                ileriClick();
            }
        }

        private void txtVade_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
            {
                cmbDepo.Focus();
            }
        }

        private void cmbDepo_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
            {
                txtSeri.Focus();
            }
        }

        private void dteTarih_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
            {
                txtBelgeNo.Focus();
            }
        }

        private void txtBelgeNo_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
            {
                txtVade.Focus();
            }
        }

        private void frmBelgeNoGiris_Activated(object sender, EventArgs e)
        {
            dteTarih.Focus();
        }
    }
}